Conventional digital video recorder (DVR) functionality uses a scheduler. A scheduler comprises functionality which coordinates the recordation of media programs. The scheduler performs this task by creating a schedule and the DVR then records the media programs identified in the schedule. More specifically, the schedule includes entries which identify the respective media programs. The entries include timing-related information and other data which governs the recording of the corresponding media programs.
Occasionally, a user attempts to add an entry to the schedule which conflicts with one or more pre-existing entries. For example, consider the case in which a client device employs a conventional physical tuner to receive media information from a head-end source. This tuner can only tune to and receive one media program at any given time (e.g., by tuning to a prescribed frequency that carries the media program). Thus, if the user adds an entry to the schedule which identifies a media program which temporally overlaps the airing of another media program, then a conflict is created, because the tuner cannot tune to and receive two media programs at one time. The scheduler can resolve this conflict by alerting the user to the conflict and requesting the user to select either of the conflicting media programs.
A more complex client device can employ multiple tuners that allow the client device to receive and record multiple media programs at the same time. Such devices may employ multiple physical turners, or alternatively, a virtual tuner that receives a variable number of digital media programs by “tuning” to these streams in a unicast and/or multicast fashion. When a virtual tuner is employed, instead of being limited by the number of physical tuners it incorporates, the number of media programs a client device can generally receive is limited by a variety of factors such as the processing capabilities of the client device and the network throughput, for example.
However, conflict resolution for client devices that employ virtual tuners that can receive and record multiple media programs does not fundamentally depart from the basic paradigm used by the single-tuner case. Namely, the scheduler determines whether, at any given time, the client device can simultaneously receive and record all of the media programs identified in the schedule. If, at any given time, the number of media programs to be recorded exceeds the number that can actually be recorded, a conflict exists. The scheduler may attempt to resolve the conflict in the manner specified above, that is, by alerting the user to the conflict and prompting the user to eliminate one or more entries in the schedule to remove the assessed conflicts.
However, conflict resolution may be more complex in a client device that employs virtual tuner functionality. This is because the client device is constrained by the total amount of available bandwidth, rather than the total number of available physical tuners. This allows for many more degrees of freedom in creating and modifying a schedule compared to the traditional scheduling paradigm described above. For example, any event that consumes a portion of the available bandwidth can potentially cause a conflict in a schedule, and a change made to one part of the schedule can propagate through the schedule, mandating that potentially complex changes be made to other entries in the schedule.